package com.project.business.service;

import com.common.exception.ErrCode;
import com.common.exception.SeException;
import org.noear.solon.annotation.Component;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 统计类线程对象 -- 异步线程
 * 防止频繁的边角料操作导致file表锁住，加异步，让边角料自行了断
 * 调用：
 * 注入 RunnableService后 使用 .run()
 */
@Component
public class RunnableService {

    // 引用线程池
    private final ExecutorService executorService = Executors.newFixedThreadPool(5);

    public void run(Integer userId) {
        executorService.submit(new ThisRunnable(userId));
    }

    // 定义线程
    static class ThisRunnable implements Runnable {


        // 参数定义
        private final Integer userId;

        // 有多个，这就在（）放多个
        public ThisRunnable(Integer userId) {
            this.userId = userId;
        }

        // 执行线程
        @Override
        public void run() {
            try {
                // 线程具体方法
                // 当增加 或者 删除的时候，记录文件类型统计数据
//                UserService userService = Solon.context().getBean(UserService.class);
                // 增加操作记录
//                userService.xxx(userId);
            } catch (Exception e) {
                throw new SeException(ErrCode.System_Error);
            }
        }
    }

}
